home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Visual Basic Source Code
/
Visual Basic Source Code.iso
/
vbsource
/
opengl1a
/
frmmain.frm
(
.txt
)
next >
Wrap
Visual Basic Form
|
1999-09-23
|
11KB
|
329 lines
VERSION 5.00
Begin VB.Form frmMain
BackColor = &H00000000&
BorderStyle = 0 'None
Caption = "John's Jumping GL Cube"
ClientHeight = 5535
ClientLeft = 0
ClientTop = 0
ClientWidth = 7770
KeyPreview = -1 'True
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 369
ScaleMode = 3 'Pixel
ScaleWidth = 518
ShowInTaskbar = 0 'False
StartUpPosition = 3 'Windows Default
WindowState = 2 'Maximized
Begin VB.CommandButton Command1
Appearance = 0 'Flat
BackColor = &H00000000&
Caption = "Exit"
Height = 285
Left = 45
MaskColor = &H00FF0000&
TabIndex = 0
Top = 30
Width = 1650
End
Begin VB.Timer Timer1
Interval = 1
Left = 120
Top = 360
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Some of this code was created by some unknown person, i downloaded it from the net somewhere,
' i do not claim to have written the complete code to this program. But i have made plenty of modifications, which basically
' makes this code my own, only about 10% is somebody elses, mainly the Init of GL.
' Any problems with this code, email me at the following address:
' John@john-obrien.freeserve.co.uk
' Copyright (C) 1999 John O'Brien (Yeah right, i couldn't copyright this code if i tried,
' because the code is too generic, everybody uses it)
' Although i have copyrighted this source code and program, you are free to modify, change, hack,
' learn from, this code and program (that's the idea, and besides i can't stop you!)
' Happy coding and i hope this helps you on your journey to become a better OpenGL programmer......
Option Explicit
Private Declare Function GetFocus Lib "user32" () As Long
Private Declare Function ChoosePixelFormat Lib "gdi32" (ByVal hDC As Long, pfd As PIXELFORMATDESCRIPTOR) As Long
Private Declare Function CreatePalette Lib "gdi32" (pPal As LOGPALETTE) As Long
Private Declare Sub DeleteObject Lib "gdi32" (hObject As Long)
Private Declare Sub DescribePixelFormat Lib "gdi32" (ByVal hDC As Long, ByVal PixelFormat As Long, ByVal nBytes As Long, pfd As PIXELFORMATDESCRIPTOR)
Private Declare Function GetDC Lib "gdi32" (ByVal hWnd As Long) As Long
Private Declare Function GetPixelFormat Lib "gdi32" (ByVal hDC As Long) As Long
Private Declare Sub GetSystemPaletteEntries Lib "gdi32" (ByVal hDC As Long, ByVal start As Long, ByVal entries As Long, ByVal ptrEntries As Long)
Private Declare Sub RealizePalette Lib "gdi32" (ByVal hPalette As Long)
Private Declare Sub SelectPalette Lib "gdi32" (ByVal hDC As Long, ByVal hPalette As Long, ByVal bln As Long)
Private Declare Function SetPixelFormat Lib "gdi32" (ByVal hDC As Long, ByVal i As Long, pfd As PIXELFORMATDESCRIPTOR) As Boolean
Private Declare Sub SwapBuffers Lib "gdi32" (ByVal hDC As Long)
Private Declare Function wglCreateContext Lib "OpenGL32" (ByVal hDC As Long) As Long
Private Declare Sub wglDeleteContext Lib "OpenGL32" (ByVal hContext As Long)
Private Declare Sub wglMakeCurrent Lib "OpenGL32" (ByVal l1 As Long, ByVal l2 As Long)
Private Type PALETTEENTRY
peRed As Byte
peGreen As Byte
peBlue As Byte
peFlags As Byte
End Type
Private Type LOGPALETTE
palVersion As Integer
palNumEntries As Integer
palPalEntry(0 To 255) As PALETTEENTRY
End Type
Private Type PIXELFORMATDESCRIPTOR
nSize As Integer
nVersion As Integer
dwFlags As Long
iPixelType As Byte
cColorBits As Byte
cRedBits As Byte
cRedShift As Byte
cGreenBits As Byte
cGreenShift As Byte
cBlueBits As Byte
cBlueShift As Byte
cAlphaBits As Byte
cAlphaShift As Byte
cAccumBits As Byte
cAccumRedBits As Byte
cAccumGreenBits As Byte
cAccumBlueBits As Byte
cAccumAlpgaBits As Byte
cDepthBits As Byte
cStencilBits As Byte
cAuxBuffers As Byte
iLayerType As Byte
bReserved As Byte
dwLayerMask As Long
dwVisibleMask As Long
dwDamageMask As Long
End Type
Const PFD_TYPE_RGBA = 0
Const PFD_TYPE_COLORINDEX = 1
Const PFD_MAIN_PLANE = 0
Const PFD_DOUBLEBUFFER = 1
Const PFD_DRAW_TO_WINDOW = &H4
Const PFD_SUPPORT_OPENGL = &H20
Const PFD_NEED_PALETTE = &H80
Dim hPalette As Long
Dim hGLRC As Long
Dim xAngle As GLfloat
Dim yAngle As GLfloat
Dim zAngle As GLfloat
Dim doubleBuffer As GLboolean
Dim displayListInited As GLboolean
Dim MatSpecular(3) As GLfloat
Dim MatShininess(0) As GLfloat
Dim LightPosition(3) As GLfloat
Dim pPos As Long
Dim lasty As Single
Dim i As Long
Sub MyInit()
MatSpecular(0) = 1
MatSpecular(1) = 1
MatSpecular(2) = 1
MatSpecular(3) = 1
MatShininess(0) = 50
LightPosition(0) = 1
LightPosition(1) = 1
LightPosition(2) = 1
LightPosition(3) = 0
glMaterialfv GL_FRONT, GL_SPECULAR, MatSpecular(0)
glMaterialfv GL_FRONT, GL_SHININESS, MatShininess(0)
glLightfv GL_LIGHT0, GL_POSITION, LightPosition(0)
glEnable GL_LIGHTING
glEnable GL_LIGHT0
glDepthFunc GL_LESS
glEnable GL_DEPTH_TEST
End Sub
Private Sub TEMP()
glColor4i 250, 0, 0, 0
glVertex4i -1, 1, 1, 1
glVertex4i 1, -1, 1, -1
glVertex4i -1, 1, -1, 1
glVertex4i 1, -1, 1, 1
glColor4i 0, 250, 0, 150
glVertex4i 1, -1, -1, -1
glVertex4i -1, 1, -1, 1
glVertex4i 1, -1, 1, -1
glVertex4i -1, 1, -1, -1
glColor4i 0, 250, 0, 150
glVertex4i -1, 1, 1, -1
glVertex4i 1, -1, 1, -1
glVertex4i -1, 1, -1, 1
glVertex4i 1, -1, -1, 1
glColor4i 0, 250, 0, 150
glVertex4i 1, 1, -1, -1
glVertex4i -1, 1, -1, 1
glVertex4i 1, 1, 1, -1
glVertex4i -1, 1, 1, -1
'Me.Show
End Sub
Sub FatalError(ByVal strMessage As String)
'Error handler, used when something goes wrong, to exit.
MsgBox "Fatal Error: " & strMessage, vbCritical + vbApplicationModal + vbOKOnly + vbDefaultButton1, "Fatal Error In " & App.Title
Unload frmMain
Set frmMain = Nothing
End
End Sub
Sub SetupPixelFormat(ByVal hDC As Long)
'Retrieve/set a Win32 pixel format for OpenGL modes with double-
'buffering, and direct draw to window with RGBA color mode.
'16bit (65536 colors) depth is preferable.
Dim pfd As PIXELFORMATDESCRIPTOR
Dim PixelFormat As Integer
pfd.nSize = Len(pfd)
pfd.nVersion = 1
pfd.dwFlags = PFD_SUPPORT_OPENGL Or PFD_DRAW_TO_WINDOW Or PFD_DOUBLEBUFFER Or PFD_TYPE_RGBA
pfd.iPixelType = PFD_TYPE_RGBA
pfd.cColorBits = 16
pfd.cDepthBits = 16
pfd.iLayerType = PFD_MAIN_PLANE
PixelFormat = ChoosePixelFormat(hDC, pfd)
If PixelFormat = 0 Then FatalError "Could not retrieve pixel format!"
SetPixelFormat hDC, PixelFormat, pfd
End Sub
Sub SetupPalette(ByVal lhDC As Long)
' Initialize the Win32 form pallete.
Dim PixelFormat As Long
Dim pfd As PIXELFORMATDESCRIPTOR
Dim pPal As LOGPALETTE
Dim PaletteSize As Long
PixelFormat = GetPixelFormat(lhDC)
DescribePixelFormat lhDC, PixelFormat, Len(pfd), pfd
If (pfd.dwFlags And PFD_NEED_PALETTE) <> 0 Then
PaletteSize = 2 ^ pfd.cColorBits
Else
Exit Sub
End If
pPal.palVersion = &H300
pPal.palNumEntries = PaletteSize
Dim redMask As Long
Dim GreenMask As Long
Dim BlueMask As Long
Dim i As Long
redMask = 2 ^ pfd.cRedBits - 1
GreenMask = 2 ^ pfd.cGreenBits - 1
BlueMask = 2 ^ pfd.cBlueBits - 1
For i = 0 To PaletteSize - 1
With pPal.palPalEntry(i)
.peRed = i
.peGreen = i
.peBlue = i
.peFlags = 0
End With
Next
GetSystemPaletteEntries hDC, 0, 256, VarPtr(pPal.palPalEntry(0))
hPalette = CreatePalette(pPal)
If hPalette <> 0 Then
SelectPalette lhDC, hPalette, False
RealizePalette lhDC
End If
End Sub
Private Sub Command1_Click()
End Sub
Private Sub F